package org.xtext.tcc.ui.contentassist.antlr.internal; 

import java.io.InputStream;
import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.xtext.parsetree.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.AbstractInternalContentAssistParser;
import org.eclipse.xtext.ui.editor.contentassist.antlr.internal.DFA;
import org.xtext.tcc.services.TccdslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalTccdslParser extends AbstractInternalContentAssistParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_INT", "RULE_STRING", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'typedef'", "'mapsto'", "'.'", "'entity'", "'extends'", "'functions'", "'void'", "'('", "')'", "'*'"
    };
    public static final int RULE_ID=4;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__19=19;
    public static final int RULE_STRING=6;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=5;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalTccdslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalTccdslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalTccdslParser.tokenNames; }
    public String getGrammarFileName() { return "../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g"; }


     
     	private TccdslGrammarAccess grammarAccess;
     	
        public void setGrammarAccess(TccdslGrammarAccess grammarAccess) {
        	this.grammarAccess = grammarAccess;
        }
        
        @Override
        protected Grammar getGrammar() {
        	return grammarAccess.getGrammar();
        }
        
        @Override
        protected String getValueForTokenName(String tokenName) {
        	return tokenName;
        }




    // $ANTLR start "entryRuleModel"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:61:1: entryRuleModel : ruleModel EOF ;
    public final void entryRuleModel() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:62:1: ( ruleModel EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:63:1: ruleModel EOF
            {
             before(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel61);
            ruleModel();

            state._fsp--;

             after(grammarAccess.getModelRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel68); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:70:1: ruleModel : ( ( rule__Model__TypesAssignment )* ) ;
    public final void ruleModel() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:74:2: ( ( ( rule__Model__TypesAssignment )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:75:1: ( ( rule__Model__TypesAssignment )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:75:1: ( ( rule__Model__TypesAssignment )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:76:1: ( rule__Model__TypesAssignment )*
            {
             before(grammarAccess.getModelAccess().getTypesAssignment()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:77:1: ( rule__Model__TypesAssignment )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11||LA1_0==14||LA1_0==17) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:77:2: rule__Model__TypesAssignment
            	    {
            	    pushFollow(FOLLOW_rule__Model__TypesAssignment_in_ruleModel94);
            	    rule__Model__TypesAssignment();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);

             after(grammarAccess.getModelAccess().getTypesAssignment()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleType"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:89:1: entryRuleType : ruleType EOF ;
    public final void entryRuleType() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:90:1: ( ruleType EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:91:1: ruleType EOF
            {
             before(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType122);
            ruleType();

            state._fsp--;

             after(grammarAccess.getTypeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType129); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:98:1: ruleType : ( ( rule__Type__Alternatives ) ) ;
    public final void ruleType() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:102:2: ( ( ( rule__Type__Alternatives ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:103:1: ( ( rule__Type__Alternatives ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:103:1: ( ( rule__Type__Alternatives ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:104:1: ( rule__Type__Alternatives )
            {
             before(grammarAccess.getTypeAccess().getAlternatives()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:105:1: ( rule__Type__Alternatives )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:105:2: rule__Type__Alternatives
            {
            pushFollow(FOLLOW_rule__Type__Alternatives_in_ruleType155);
            rule__Type__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getTypeAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRulePackage"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:117:1: entryRulePackage : rulePackage EOF ;
    public final void entryRulePackage() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:118:1: ( rulePackage EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:119:1: rulePackage EOF
            {
             before(grammarAccess.getPackageRule()); 
            pushFollow(FOLLOW_rulePackage_in_entryRulePackage182);
            rulePackage();

            state._fsp--;

             after(grammarAccess.getPackageRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePackage189); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRulePackage"


    // $ANTLR start "rulePackage"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:126:1: rulePackage : ( ( rule__Package__Group__0 ) ) ;
    public final void rulePackage() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:130:2: ( ( ( rule__Package__Group__0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:131:1: ( ( rule__Package__Group__0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:131:1: ( ( rule__Package__Group__0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:132:1: ( rule__Package__Group__0 )
            {
             before(grammarAccess.getPackageAccess().getGroup()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:133:1: ( rule__Package__Group__0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:133:2: rule__Package__Group__0
            {
            pushFollow(FOLLOW_rule__Package__Group__0_in_rulePackage215);
            rule__Package__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getPackageAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rulePackage"


    // $ANTLR start "entryRuleTypeDef"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:145:1: entryRuleTypeDef : ruleTypeDef EOF ;
    public final void entryRuleTypeDef() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:146:1: ( ruleTypeDef EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:147:1: ruleTypeDef EOF
            {
             before(grammarAccess.getTypeDefRule()); 
            pushFollow(FOLLOW_ruleTypeDef_in_entryRuleTypeDef242);
            ruleTypeDef();

            state._fsp--;

             after(grammarAccess.getTypeDefRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeDef249); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleTypeDef"


    // $ANTLR start "ruleTypeDef"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:154:1: ruleTypeDef : ( ( rule__TypeDef__Group__0 ) ) ;
    public final void ruleTypeDef() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:158:2: ( ( ( rule__TypeDef__Group__0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:159:1: ( ( rule__TypeDef__Group__0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:159:1: ( ( rule__TypeDef__Group__0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:160:1: ( rule__TypeDef__Group__0 )
            {
             before(grammarAccess.getTypeDefAccess().getGroup()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:161:1: ( rule__TypeDef__Group__0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:161:2: rule__TypeDef__Group__0
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__0_in_ruleTypeDef275);
            rule__TypeDef__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getTypeDefAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleTypeDef"


    // $ANTLR start "entryRuleJAVAID"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:173:1: entryRuleJAVAID : ruleJAVAID EOF ;
    public final void entryRuleJAVAID() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:174:1: ( ruleJAVAID EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:175:1: ruleJAVAID EOF
            {
             before(grammarAccess.getJAVAIDRule()); 
            pushFollow(FOLLOW_ruleJAVAID_in_entryRuleJAVAID302);
            ruleJAVAID();

            state._fsp--;

             after(grammarAccess.getJAVAIDRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleJAVAID309); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleJAVAID"


    // $ANTLR start "ruleJAVAID"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:182:1: ruleJAVAID : ( ( rule__JAVAID__Group__0 ) ) ;
    public final void ruleJAVAID() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:186:2: ( ( ( rule__JAVAID__Group__0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:187:1: ( ( rule__JAVAID__Group__0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:187:1: ( ( rule__JAVAID__Group__0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:188:1: ( rule__JAVAID__Group__0 )
            {
             before(grammarAccess.getJAVAIDAccess().getGroup()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:189:1: ( rule__JAVAID__Group__0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:189:2: rule__JAVAID__Group__0
            {
            pushFollow(FOLLOW_rule__JAVAID__Group__0_in_ruleJAVAID335);
            rule__JAVAID__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getJAVAIDAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleJAVAID"


    // $ANTLR start "entryRuleEntity"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:201:1: entryRuleEntity : ruleEntity EOF ;
    public final void entryRuleEntity() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:202:1: ( ruleEntity EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:203:1: ruleEntity EOF
            {
             before(grammarAccess.getEntityRule()); 
            pushFollow(FOLLOW_ruleEntity_in_entryRuleEntity362);
            ruleEntity();

            state._fsp--;

             after(grammarAccess.getEntityRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEntity369); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleEntity"


    // $ANTLR start "ruleEntity"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:210:1: ruleEntity : ( ( rule__Entity__Group__0 ) ) ;
    public final void ruleEntity() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:214:2: ( ( ( rule__Entity__Group__0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:215:1: ( ( rule__Entity__Group__0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:215:1: ( ( rule__Entity__Group__0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:216:1: ( rule__Entity__Group__0 )
            {
             before(grammarAccess.getEntityAccess().getGroup()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:217:1: ( rule__Entity__Group__0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:217:2: rule__Entity__Group__0
            {
            pushFollow(FOLLOW_rule__Entity__Group__0_in_ruleEntity395);
            rule__Entity__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getEntityAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleEntity"


    // $ANTLR start "entryRuleAttribute"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:229:1: entryRuleAttribute : ruleAttribute EOF ;
    public final void entryRuleAttribute() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:230:1: ( ruleAttribute EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:231:1: ruleAttribute EOF
            {
             before(grammarAccess.getAttributeRule()); 
            pushFollow(FOLLOW_ruleAttribute_in_entryRuleAttribute422);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getAttributeRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAttribute429); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleAttribute"


    // $ANTLR start "ruleAttribute"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:238:1: ruleAttribute : ( ( rule__Attribute__Group__0 ) ) ;
    public final void ruleAttribute() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:242:2: ( ( ( rule__Attribute__Group__0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:243:1: ( ( rule__Attribute__Group__0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:243:1: ( ( rule__Attribute__Group__0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:244:1: ( rule__Attribute__Group__0 )
            {
             before(grammarAccess.getAttributeAccess().getGroup()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:245:1: ( rule__Attribute__Group__0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:245:2: rule__Attribute__Group__0
            {
            pushFollow(FOLLOW_rule__Attribute__Group__0_in_ruleAttribute455);
            rule__Attribute__Group__0();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getGroup()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleAttribute"


    // $ANTLR start "entryRuleFunction"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:257:1: entryRuleFunction : ruleFunction EOF ;
    public final void entryRuleFunction() throws RecognitionException {
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:258:1: ( ruleFunction EOF )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:259:1: ruleFunction EOF
            {
             before(grammarAccess.getFunctionRule()); 
            pushFollow(FOLLOW_ruleFunction_in_entryRuleFunction482);
            ruleFunction();

            state._fsp--;

             after(grammarAccess.getFunctionRule()); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunction489); 

            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {
        }
        return ;
    }
    // $ANTLR end "entryRuleFunction"


    // $ANTLR start "ruleFunction"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:266:1: ruleFunction : ( ( rule__Function__Alternatives ) ) ;
    public final void ruleFunction() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:270:2: ( ( ( rule__Function__Alternatives ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:271:1: ( ( rule__Function__Alternatives ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:271:1: ( ( rule__Function__Alternatives ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:272:1: ( rule__Function__Alternatives )
            {
             before(grammarAccess.getFunctionAccess().getAlternatives()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:273:1: ( rule__Function__Alternatives )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:273:2: rule__Function__Alternatives
            {
            pushFollow(FOLLOW_rule__Function__Alternatives_in_ruleFunction515);
            rule__Function__Alternatives();

            state._fsp--;


            }

             after(grammarAccess.getFunctionAccess().getAlternatives()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "ruleFunction"


    // $ANTLR start "rule__Type__Alternatives"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:285:1: rule__Type__Alternatives : ( ( rulePackage ) | ( ruleTypeDef ) | ( ruleEntity ) );
    public final void rule__Type__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:289:1: ( ( rulePackage ) | ( ruleTypeDef ) | ( ruleEntity ) )
            int alt2=3;
            switch ( input.LA(1) ) {
            case 11:
                {
                alt2=1;
                }
                break;
            case 14:
                {
                alt2=2;
                }
                break;
            case 17:
                {
                alt2=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }

            switch (alt2) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:290:1: ( rulePackage )
                    {
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:290:1: ( rulePackage )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:291:1: rulePackage
                    {
                     before(grammarAccess.getTypeAccess().getPackageParserRuleCall_0()); 
                    pushFollow(FOLLOW_rulePackage_in_rule__Type__Alternatives551);
                    rulePackage();

                    state._fsp--;

                     after(grammarAccess.getTypeAccess().getPackageParserRuleCall_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:296:6: ( ruleTypeDef )
                    {
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:296:6: ( ruleTypeDef )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:297:1: ruleTypeDef
                    {
                     before(grammarAccess.getTypeAccess().getTypeDefParserRuleCall_1()); 
                    pushFollow(FOLLOW_ruleTypeDef_in_rule__Type__Alternatives568);
                    ruleTypeDef();

                    state._fsp--;

                     after(grammarAccess.getTypeAccess().getTypeDefParserRuleCall_1()); 

                    }


                    }
                    break;
                case 3 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:302:6: ( ruleEntity )
                    {
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:302:6: ( ruleEntity )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:303:1: ruleEntity
                    {
                     before(grammarAccess.getTypeAccess().getEntityParserRuleCall_2()); 
                    pushFollow(FOLLOW_ruleEntity_in_rule__Type__Alternatives585);
                    ruleEntity();

                    state._fsp--;

                     after(grammarAccess.getTypeAccess().getEntityParserRuleCall_2()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Type__Alternatives"


    // $ANTLR start "rule__Function__Alternatives"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:313:1: rule__Function__Alternatives : ( ( ( rule__Function__Group_0__0 ) ) | ( ( rule__Function__Group_1__0 ) ) );
    public final void rule__Function__Alternatives() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:317:1: ( ( ( rule__Function__Group_0__0 ) ) | ( ( rule__Function__Group_1__0 ) ) )
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( (LA3_0==20) ) {
                alt3=1;
            }
            else if ( (LA3_0==RULE_ID) ) {
                alt3=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 3, 0, input);

                throw nvae;
            }
            switch (alt3) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:318:1: ( ( rule__Function__Group_0__0 ) )
                    {
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:318:1: ( ( rule__Function__Group_0__0 ) )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:319:1: ( rule__Function__Group_0__0 )
                    {
                     before(grammarAccess.getFunctionAccess().getGroup_0()); 
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:320:1: ( rule__Function__Group_0__0 )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:320:2: rule__Function__Group_0__0
                    {
                    pushFollow(FOLLOW_rule__Function__Group_0__0_in_rule__Function__Alternatives617);
                    rule__Function__Group_0__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getFunctionAccess().getGroup_0()); 

                    }


                    }
                    break;
                case 2 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:324:6: ( ( rule__Function__Group_1__0 ) )
                    {
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:324:6: ( ( rule__Function__Group_1__0 ) )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:325:1: ( rule__Function__Group_1__0 )
                    {
                     before(grammarAccess.getFunctionAccess().getGroup_1()); 
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:326:1: ( rule__Function__Group_1__0 )
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:326:2: rule__Function__Group_1__0
                    {
                    pushFollow(FOLLOW_rule__Function__Group_1__0_in_rule__Function__Alternatives635);
                    rule__Function__Group_1__0();

                    state._fsp--;


                    }

                     after(grammarAccess.getFunctionAccess().getGroup_1()); 

                    }


                    }
                    break;

            }
        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Alternatives"


    // $ANTLR start "rule__Package__Group__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:337:1: rule__Package__Group__0 : rule__Package__Group__0__Impl rule__Package__Group__1 ;
    public final void rule__Package__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:341:1: ( rule__Package__Group__0__Impl rule__Package__Group__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:342:2: rule__Package__Group__0__Impl rule__Package__Group__1
            {
            pushFollow(FOLLOW_rule__Package__Group__0__Impl_in_rule__Package__Group__0666);
            rule__Package__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__1_in_rule__Package__Group__0669);
            rule__Package__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__0"


    // $ANTLR start "rule__Package__Group__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:349:1: rule__Package__Group__0__Impl : ( 'package' ) ;
    public final void rule__Package__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:353:1: ( ( 'package' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:354:1: ( 'package' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:354:1: ( 'package' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:355:1: 'package'
            {
             before(grammarAccess.getPackageAccess().getPackageKeyword_0()); 
            match(input,11,FOLLOW_11_in_rule__Package__Group__0__Impl697); 
             after(grammarAccess.getPackageAccess().getPackageKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__0__Impl"


    // $ANTLR start "rule__Package__Group__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:368:1: rule__Package__Group__1 : rule__Package__Group__1__Impl rule__Package__Group__2 ;
    public final void rule__Package__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:372:1: ( rule__Package__Group__1__Impl rule__Package__Group__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:373:2: rule__Package__Group__1__Impl rule__Package__Group__2
            {
            pushFollow(FOLLOW_rule__Package__Group__1__Impl_in_rule__Package__Group__1728);
            rule__Package__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__2_in_rule__Package__Group__1731);
            rule__Package__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__1"


    // $ANTLR start "rule__Package__Group__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:380:1: rule__Package__Group__1__Impl : ( ( rule__Package__NameAssignment_1 ) ) ;
    public final void rule__Package__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:384:1: ( ( ( rule__Package__NameAssignment_1 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:385:1: ( ( rule__Package__NameAssignment_1 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:385:1: ( ( rule__Package__NameAssignment_1 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:386:1: ( rule__Package__NameAssignment_1 )
            {
             before(grammarAccess.getPackageAccess().getNameAssignment_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:387:1: ( rule__Package__NameAssignment_1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:387:2: rule__Package__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Package__NameAssignment_1_in_rule__Package__Group__1__Impl758);
            rule__Package__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getPackageAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__1__Impl"


    // $ANTLR start "rule__Package__Group__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:397:1: rule__Package__Group__2 : rule__Package__Group__2__Impl rule__Package__Group__3 ;
    public final void rule__Package__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:401:1: ( rule__Package__Group__2__Impl rule__Package__Group__3 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:402:2: rule__Package__Group__2__Impl rule__Package__Group__3
            {
            pushFollow(FOLLOW_rule__Package__Group__2__Impl_in_rule__Package__Group__2788);
            rule__Package__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__3_in_rule__Package__Group__2791);
            rule__Package__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__2"


    // $ANTLR start "rule__Package__Group__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:409:1: rule__Package__Group__2__Impl : ( '{' ) ;
    public final void rule__Package__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:413:1: ( ( '{' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:414:1: ( '{' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:414:1: ( '{' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:415:1: '{'
            {
             before(grammarAccess.getPackageAccess().getLeftCurlyBracketKeyword_2()); 
            match(input,12,FOLLOW_12_in_rule__Package__Group__2__Impl819); 
             after(grammarAccess.getPackageAccess().getLeftCurlyBracketKeyword_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__2__Impl"


    // $ANTLR start "rule__Package__Group__3"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:428:1: rule__Package__Group__3 : rule__Package__Group__3__Impl rule__Package__Group__4 ;
    public final void rule__Package__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:432:1: ( rule__Package__Group__3__Impl rule__Package__Group__4 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:433:2: rule__Package__Group__3__Impl rule__Package__Group__4
            {
            pushFollow(FOLLOW_rule__Package__Group__3__Impl_in_rule__Package__Group__3850);
            rule__Package__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Package__Group__4_in_rule__Package__Group__3853);
            rule__Package__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__3"


    // $ANTLR start "rule__Package__Group__3__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:440:1: rule__Package__Group__3__Impl : ( ( rule__Package__TypesAssignment_3 )* ) ;
    public final void rule__Package__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:444:1: ( ( ( rule__Package__TypesAssignment_3 )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:445:1: ( ( rule__Package__TypesAssignment_3 )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:445:1: ( ( rule__Package__TypesAssignment_3 )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:446:1: ( rule__Package__TypesAssignment_3 )*
            {
             before(grammarAccess.getPackageAccess().getTypesAssignment_3()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:447:1: ( rule__Package__TypesAssignment_3 )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==11||LA4_0==14||LA4_0==17) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:447:2: rule__Package__TypesAssignment_3
            	    {
            	    pushFollow(FOLLOW_rule__Package__TypesAssignment_3_in_rule__Package__Group__3__Impl880);
            	    rule__Package__TypesAssignment_3();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);

             after(grammarAccess.getPackageAccess().getTypesAssignment_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__3__Impl"


    // $ANTLR start "rule__Package__Group__4"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:457:1: rule__Package__Group__4 : rule__Package__Group__4__Impl ;
    public final void rule__Package__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:461:1: ( rule__Package__Group__4__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:462:2: rule__Package__Group__4__Impl
            {
            pushFollow(FOLLOW_rule__Package__Group__4__Impl_in_rule__Package__Group__4911);
            rule__Package__Group__4__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__4"


    // $ANTLR start "rule__Package__Group__4__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:468:1: rule__Package__Group__4__Impl : ( '}' ) ;
    public final void rule__Package__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:472:1: ( ( '}' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:473:1: ( '}' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:473:1: ( '}' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:474:1: '}'
            {
             before(grammarAccess.getPackageAccess().getRightCurlyBracketKeyword_4()); 
            match(input,13,FOLLOW_13_in_rule__Package__Group__4__Impl939); 
             after(grammarAccess.getPackageAccess().getRightCurlyBracketKeyword_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__Group__4__Impl"


    // $ANTLR start "rule__TypeDef__Group__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:497:1: rule__TypeDef__Group__0 : rule__TypeDef__Group__0__Impl rule__TypeDef__Group__1 ;
    public final void rule__TypeDef__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:501:1: ( rule__TypeDef__Group__0__Impl rule__TypeDef__Group__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:502:2: rule__TypeDef__Group__0__Impl rule__TypeDef__Group__1
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__0__Impl_in_rule__TypeDef__Group__0980);
            rule__TypeDef__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__TypeDef__Group__1_in_rule__TypeDef__Group__0983);
            rule__TypeDef__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__0"


    // $ANTLR start "rule__TypeDef__Group__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:509:1: rule__TypeDef__Group__0__Impl : ( 'typedef' ) ;
    public final void rule__TypeDef__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:513:1: ( ( 'typedef' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:514:1: ( 'typedef' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:514:1: ( 'typedef' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:515:1: 'typedef'
            {
             before(grammarAccess.getTypeDefAccess().getTypedefKeyword_0()); 
            match(input,14,FOLLOW_14_in_rule__TypeDef__Group__0__Impl1011); 
             after(grammarAccess.getTypeDefAccess().getTypedefKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__0__Impl"


    // $ANTLR start "rule__TypeDef__Group__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:528:1: rule__TypeDef__Group__1 : rule__TypeDef__Group__1__Impl rule__TypeDef__Group__2 ;
    public final void rule__TypeDef__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:532:1: ( rule__TypeDef__Group__1__Impl rule__TypeDef__Group__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:533:2: rule__TypeDef__Group__1__Impl rule__TypeDef__Group__2
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__1__Impl_in_rule__TypeDef__Group__11042);
            rule__TypeDef__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__TypeDef__Group__2_in_rule__TypeDef__Group__11045);
            rule__TypeDef__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__1"


    // $ANTLR start "rule__TypeDef__Group__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:540:1: rule__TypeDef__Group__1__Impl : ( ( rule__TypeDef__NameAssignment_1 ) ) ;
    public final void rule__TypeDef__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:544:1: ( ( ( rule__TypeDef__NameAssignment_1 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:545:1: ( ( rule__TypeDef__NameAssignment_1 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:545:1: ( ( rule__TypeDef__NameAssignment_1 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:546:1: ( rule__TypeDef__NameAssignment_1 )
            {
             before(grammarAccess.getTypeDefAccess().getNameAssignment_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:547:1: ( rule__TypeDef__NameAssignment_1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:547:2: rule__TypeDef__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__TypeDef__NameAssignment_1_in_rule__TypeDef__Group__1__Impl1072);
            rule__TypeDef__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getTypeDefAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__1__Impl"


    // $ANTLR start "rule__TypeDef__Group__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:557:1: rule__TypeDef__Group__2 : rule__TypeDef__Group__2__Impl ;
    public final void rule__TypeDef__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:561:1: ( rule__TypeDef__Group__2__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:562:2: rule__TypeDef__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__TypeDef__Group__2__Impl_in_rule__TypeDef__Group__21102);
            rule__TypeDef__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__2"


    // $ANTLR start "rule__TypeDef__Group__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:568:1: rule__TypeDef__Group__2__Impl : ( ( rule__TypeDef__Group_2__0 )? ) ;
    public final void rule__TypeDef__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:572:1: ( ( ( rule__TypeDef__Group_2__0 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:573:1: ( ( rule__TypeDef__Group_2__0 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:573:1: ( ( rule__TypeDef__Group_2__0 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:574:1: ( rule__TypeDef__Group_2__0 )?
            {
             before(grammarAccess.getTypeDefAccess().getGroup_2()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:575:1: ( rule__TypeDef__Group_2__0 )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==15) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:575:2: rule__TypeDef__Group_2__0
                    {
                    pushFollow(FOLLOW_rule__TypeDef__Group_2__0_in_rule__TypeDef__Group__2__Impl1129);
                    rule__TypeDef__Group_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getTypeDefAccess().getGroup_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group__2__Impl"


    // $ANTLR start "rule__TypeDef__Group_2__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:591:1: rule__TypeDef__Group_2__0 : rule__TypeDef__Group_2__0__Impl rule__TypeDef__Group_2__1 ;
    public final void rule__TypeDef__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:595:1: ( rule__TypeDef__Group_2__0__Impl rule__TypeDef__Group_2__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:596:2: rule__TypeDef__Group_2__0__Impl rule__TypeDef__Group_2__1
            {
            pushFollow(FOLLOW_rule__TypeDef__Group_2__0__Impl_in_rule__TypeDef__Group_2__01166);
            rule__TypeDef__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__TypeDef__Group_2__1_in_rule__TypeDef__Group_2__01169);
            rule__TypeDef__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__0"


    // $ANTLR start "rule__TypeDef__Group_2__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:603:1: rule__TypeDef__Group_2__0__Impl : ( 'mapsto' ) ;
    public final void rule__TypeDef__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:607:1: ( ( 'mapsto' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:608:1: ( 'mapsto' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:608:1: ( 'mapsto' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:609:1: 'mapsto'
            {
             before(grammarAccess.getTypeDefAccess().getMapstoKeyword_2_0()); 
            match(input,15,FOLLOW_15_in_rule__TypeDef__Group_2__0__Impl1197); 
             after(grammarAccess.getTypeDefAccess().getMapstoKeyword_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__0__Impl"


    // $ANTLR start "rule__TypeDef__Group_2__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:622:1: rule__TypeDef__Group_2__1 : rule__TypeDef__Group_2__1__Impl ;
    public final void rule__TypeDef__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:626:1: ( rule__TypeDef__Group_2__1__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:627:2: rule__TypeDef__Group_2__1__Impl
            {
            pushFollow(FOLLOW_rule__TypeDef__Group_2__1__Impl_in_rule__TypeDef__Group_2__11228);
            rule__TypeDef__Group_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__1"


    // $ANTLR start "rule__TypeDef__Group_2__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:633:1: rule__TypeDef__Group_2__1__Impl : ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) ) ;
    public final void rule__TypeDef__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:637:1: ( ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:638:1: ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:638:1: ( ( rule__TypeDef__MappedTypeAssignment_2_1 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:639:1: ( rule__TypeDef__MappedTypeAssignment_2_1 )
            {
             before(grammarAccess.getTypeDefAccess().getMappedTypeAssignment_2_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:640:1: ( rule__TypeDef__MappedTypeAssignment_2_1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:640:2: rule__TypeDef__MappedTypeAssignment_2_1
            {
            pushFollow(FOLLOW_rule__TypeDef__MappedTypeAssignment_2_1_in_rule__TypeDef__Group_2__1__Impl1255);
            rule__TypeDef__MappedTypeAssignment_2_1();

            state._fsp--;


            }

             after(grammarAccess.getTypeDefAccess().getMappedTypeAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__Group_2__1__Impl"


    // $ANTLR start "rule__JAVAID__Group__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:654:1: rule__JAVAID__Group__0 : rule__JAVAID__Group__0__Impl rule__JAVAID__Group__1 ;
    public final void rule__JAVAID__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:658:1: ( rule__JAVAID__Group__0__Impl rule__JAVAID__Group__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:659:2: rule__JAVAID__Group__0__Impl rule__JAVAID__Group__1
            {
            pushFollow(FOLLOW_rule__JAVAID__Group__0__Impl_in_rule__JAVAID__Group__01289);
            rule__JAVAID__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__JAVAID__Group__1_in_rule__JAVAID__Group__01292);
            rule__JAVAID__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__0"


    // $ANTLR start "rule__JAVAID__Group__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:666:1: rule__JAVAID__Group__0__Impl : ( RULE_ID ) ;
    public final void rule__JAVAID__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:670:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:671:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:671:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:672:1: RULE_ID
            {
             before(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__JAVAID__Group__0__Impl1319); 
             after(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__0__Impl"


    // $ANTLR start "rule__JAVAID__Group__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:683:1: rule__JAVAID__Group__1 : rule__JAVAID__Group__1__Impl ;
    public final void rule__JAVAID__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:687:1: ( rule__JAVAID__Group__1__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:688:2: rule__JAVAID__Group__1__Impl
            {
            pushFollow(FOLLOW_rule__JAVAID__Group__1__Impl_in_rule__JAVAID__Group__11348);
            rule__JAVAID__Group__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__1"


    // $ANTLR start "rule__JAVAID__Group__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:694:1: rule__JAVAID__Group__1__Impl : ( ( rule__JAVAID__Group_1__0 )* ) ;
    public final void rule__JAVAID__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:698:1: ( ( ( rule__JAVAID__Group_1__0 )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:699:1: ( ( rule__JAVAID__Group_1__0 )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:699:1: ( ( rule__JAVAID__Group_1__0 )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:700:1: ( rule__JAVAID__Group_1__0 )*
            {
             before(grammarAccess.getJAVAIDAccess().getGroup_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:701:1: ( rule__JAVAID__Group_1__0 )*
            loop6:
            do {
                int alt6=2;
                int LA6_0 = input.LA(1);

                if ( (LA6_0==16) ) {
                    alt6=1;
                }


                switch (alt6) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:701:2: rule__JAVAID__Group_1__0
            	    {
            	    pushFollow(FOLLOW_rule__JAVAID__Group_1__0_in_rule__JAVAID__Group__1__Impl1375);
            	    rule__JAVAID__Group_1__0();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop6;
                }
            } while (true);

             after(grammarAccess.getJAVAIDAccess().getGroup_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group__1__Impl"


    // $ANTLR start "rule__JAVAID__Group_1__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:715:1: rule__JAVAID__Group_1__0 : rule__JAVAID__Group_1__0__Impl rule__JAVAID__Group_1__1 ;
    public final void rule__JAVAID__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:719:1: ( rule__JAVAID__Group_1__0__Impl rule__JAVAID__Group_1__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:720:2: rule__JAVAID__Group_1__0__Impl rule__JAVAID__Group_1__1
            {
            pushFollow(FOLLOW_rule__JAVAID__Group_1__0__Impl_in_rule__JAVAID__Group_1__01410);
            rule__JAVAID__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__JAVAID__Group_1__1_in_rule__JAVAID__Group_1__01413);
            rule__JAVAID__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__0"


    // $ANTLR start "rule__JAVAID__Group_1__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:727:1: rule__JAVAID__Group_1__0__Impl : ( '.' ) ;
    public final void rule__JAVAID__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:731:1: ( ( '.' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:732:1: ( '.' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:732:1: ( '.' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:733:1: '.'
            {
             before(grammarAccess.getJAVAIDAccess().getFullStopKeyword_1_0()); 
            match(input,16,FOLLOW_16_in_rule__JAVAID__Group_1__0__Impl1441); 
             after(grammarAccess.getJAVAIDAccess().getFullStopKeyword_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__0__Impl"


    // $ANTLR start "rule__JAVAID__Group_1__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:746:1: rule__JAVAID__Group_1__1 : rule__JAVAID__Group_1__1__Impl ;
    public final void rule__JAVAID__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:750:1: ( rule__JAVAID__Group_1__1__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:751:2: rule__JAVAID__Group_1__1__Impl
            {
            pushFollow(FOLLOW_rule__JAVAID__Group_1__1__Impl_in_rule__JAVAID__Group_1__11472);
            rule__JAVAID__Group_1__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__1"


    // $ANTLR start "rule__JAVAID__Group_1__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:757:1: rule__JAVAID__Group_1__1__Impl : ( RULE_ID ) ;
    public final void rule__JAVAID__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:761:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:762:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:762:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:763:1: RULE_ID
            {
             before(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_1_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__JAVAID__Group_1__1__Impl1499); 
             after(grammarAccess.getJAVAIDAccess().getIDTerminalRuleCall_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__JAVAID__Group_1__1__Impl"


    // $ANTLR start "rule__Entity__Group__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:778:1: rule__Entity__Group__0 : rule__Entity__Group__0__Impl rule__Entity__Group__1 ;
    public final void rule__Entity__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:782:1: ( rule__Entity__Group__0__Impl rule__Entity__Group__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:783:2: rule__Entity__Group__0__Impl rule__Entity__Group__1
            {
            pushFollow(FOLLOW_rule__Entity__Group__0__Impl_in_rule__Entity__Group__01532);
            rule__Entity__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__1_in_rule__Entity__Group__01535);
            rule__Entity__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__0"


    // $ANTLR start "rule__Entity__Group__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:790:1: rule__Entity__Group__0__Impl : ( 'entity' ) ;
    public final void rule__Entity__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:794:1: ( ( 'entity' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:795:1: ( 'entity' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:795:1: ( 'entity' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:796:1: 'entity'
            {
             before(grammarAccess.getEntityAccess().getEntityKeyword_0()); 
            match(input,17,FOLLOW_17_in_rule__Entity__Group__0__Impl1563); 
             after(grammarAccess.getEntityAccess().getEntityKeyword_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__0__Impl"


    // $ANTLR start "rule__Entity__Group__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:809:1: rule__Entity__Group__1 : rule__Entity__Group__1__Impl rule__Entity__Group__2 ;
    public final void rule__Entity__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:813:1: ( rule__Entity__Group__1__Impl rule__Entity__Group__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:814:2: rule__Entity__Group__1__Impl rule__Entity__Group__2
            {
            pushFollow(FOLLOW_rule__Entity__Group__1__Impl_in_rule__Entity__Group__11594);
            rule__Entity__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__2_in_rule__Entity__Group__11597);
            rule__Entity__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__1"


    // $ANTLR start "rule__Entity__Group__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:821:1: rule__Entity__Group__1__Impl : ( ( rule__Entity__NameAssignment_1 ) ) ;
    public final void rule__Entity__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:825:1: ( ( ( rule__Entity__NameAssignment_1 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:826:1: ( ( rule__Entity__NameAssignment_1 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:826:1: ( ( rule__Entity__NameAssignment_1 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:827:1: ( rule__Entity__NameAssignment_1 )
            {
             before(grammarAccess.getEntityAccess().getNameAssignment_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:828:1: ( rule__Entity__NameAssignment_1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:828:2: rule__Entity__NameAssignment_1
            {
            pushFollow(FOLLOW_rule__Entity__NameAssignment_1_in_rule__Entity__Group__1__Impl1624);
            rule__Entity__NameAssignment_1();

            state._fsp--;


            }

             after(grammarAccess.getEntityAccess().getNameAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__1__Impl"


    // $ANTLR start "rule__Entity__Group__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:838:1: rule__Entity__Group__2 : rule__Entity__Group__2__Impl rule__Entity__Group__3 ;
    public final void rule__Entity__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:842:1: ( rule__Entity__Group__2__Impl rule__Entity__Group__3 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:843:2: rule__Entity__Group__2__Impl rule__Entity__Group__3
            {
            pushFollow(FOLLOW_rule__Entity__Group__2__Impl_in_rule__Entity__Group__21654);
            rule__Entity__Group__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__3_in_rule__Entity__Group__21657);
            rule__Entity__Group__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__2"


    // $ANTLR start "rule__Entity__Group__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:850:1: rule__Entity__Group__2__Impl : ( ( rule__Entity__Group_2__0 )? ) ;
    public final void rule__Entity__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:854:1: ( ( ( rule__Entity__Group_2__0 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:855:1: ( ( rule__Entity__Group_2__0 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:855:1: ( ( rule__Entity__Group_2__0 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:856:1: ( rule__Entity__Group_2__0 )?
            {
             before(grammarAccess.getEntityAccess().getGroup_2()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:857:1: ( rule__Entity__Group_2__0 )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==18) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:857:2: rule__Entity__Group_2__0
                    {
                    pushFollow(FOLLOW_rule__Entity__Group_2__0_in_rule__Entity__Group__2__Impl1684);
                    rule__Entity__Group_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getEntityAccess().getGroup_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__2__Impl"


    // $ANTLR start "rule__Entity__Group__3"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:867:1: rule__Entity__Group__3 : rule__Entity__Group__3__Impl rule__Entity__Group__4 ;
    public final void rule__Entity__Group__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:871:1: ( rule__Entity__Group__3__Impl rule__Entity__Group__4 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:872:2: rule__Entity__Group__3__Impl rule__Entity__Group__4
            {
            pushFollow(FOLLOW_rule__Entity__Group__3__Impl_in_rule__Entity__Group__31715);
            rule__Entity__Group__3__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__4_in_rule__Entity__Group__31718);
            rule__Entity__Group__4();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__3"


    // $ANTLR start "rule__Entity__Group__3__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:879:1: rule__Entity__Group__3__Impl : ( '{' ) ;
    public final void rule__Entity__Group__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:883:1: ( ( '{' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:884:1: ( '{' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:884:1: ( '{' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:885:1: '{'
            {
             before(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3()); 
            match(input,12,FOLLOW_12_in_rule__Entity__Group__3__Impl1746); 
             after(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__3__Impl"


    // $ANTLR start "rule__Entity__Group__4"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:898:1: rule__Entity__Group__4 : rule__Entity__Group__4__Impl rule__Entity__Group__5 ;
    public final void rule__Entity__Group__4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:902:1: ( rule__Entity__Group__4__Impl rule__Entity__Group__5 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:903:2: rule__Entity__Group__4__Impl rule__Entity__Group__5
            {
            pushFollow(FOLLOW_rule__Entity__Group__4__Impl_in_rule__Entity__Group__41777);
            rule__Entity__Group__4__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__5_in_rule__Entity__Group__41780);
            rule__Entity__Group__5();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__4"


    // $ANTLR start "rule__Entity__Group__4__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:910:1: rule__Entity__Group__4__Impl : ( ( rule__Entity__AttributesAssignment_4 )* ) ;
    public final void rule__Entity__Group__4__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:914:1: ( ( ( rule__Entity__AttributesAssignment_4 )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:915:1: ( ( rule__Entity__AttributesAssignment_4 )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:915:1: ( ( rule__Entity__AttributesAssignment_4 )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:916:1: ( rule__Entity__AttributesAssignment_4 )*
            {
             before(grammarAccess.getEntityAccess().getAttributesAssignment_4()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:917:1: ( rule__Entity__AttributesAssignment_4 )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==RULE_ID) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:917:2: rule__Entity__AttributesAssignment_4
            	    {
            	    pushFollow(FOLLOW_rule__Entity__AttributesAssignment_4_in_rule__Entity__Group__4__Impl1807);
            	    rule__Entity__AttributesAssignment_4();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

             after(grammarAccess.getEntityAccess().getAttributesAssignment_4()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__4__Impl"


    // $ANTLR start "rule__Entity__Group__5"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:927:1: rule__Entity__Group__5 : rule__Entity__Group__5__Impl rule__Entity__Group__6 ;
    public final void rule__Entity__Group__5() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:931:1: ( rule__Entity__Group__5__Impl rule__Entity__Group__6 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:932:2: rule__Entity__Group__5__Impl rule__Entity__Group__6
            {
            pushFollow(FOLLOW_rule__Entity__Group__5__Impl_in_rule__Entity__Group__51838);
            rule__Entity__Group__5__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group__6_in_rule__Entity__Group__51841);
            rule__Entity__Group__6();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__5"


    // $ANTLR start "rule__Entity__Group__5__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:939:1: rule__Entity__Group__5__Impl : ( ( rule__Entity__Group_5__0 )? ) ;
    public final void rule__Entity__Group__5__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:943:1: ( ( ( rule__Entity__Group_5__0 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:944:1: ( ( rule__Entity__Group_5__0 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:944:1: ( ( rule__Entity__Group_5__0 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:945:1: ( rule__Entity__Group_5__0 )?
            {
             before(grammarAccess.getEntityAccess().getGroup_5()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:946:1: ( rule__Entity__Group_5__0 )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==19) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:946:2: rule__Entity__Group_5__0
                    {
                    pushFollow(FOLLOW_rule__Entity__Group_5__0_in_rule__Entity__Group__5__Impl1868);
                    rule__Entity__Group_5__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getEntityAccess().getGroup_5()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__5__Impl"


    // $ANTLR start "rule__Entity__Group__6"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:956:1: rule__Entity__Group__6 : rule__Entity__Group__6__Impl ;
    public final void rule__Entity__Group__6() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:960:1: ( rule__Entity__Group__6__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:961:2: rule__Entity__Group__6__Impl
            {
            pushFollow(FOLLOW_rule__Entity__Group__6__Impl_in_rule__Entity__Group__61899);
            rule__Entity__Group__6__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__6"


    // $ANTLR start "rule__Entity__Group__6__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:967:1: rule__Entity__Group__6__Impl : ( '}' ) ;
    public final void rule__Entity__Group__6__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:971:1: ( ( '}' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:972:1: ( '}' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:972:1: ( '}' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:973:1: '}'
            {
             before(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_6()); 
            match(input,13,FOLLOW_13_in_rule__Entity__Group__6__Impl1927); 
             after(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_6()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group__6__Impl"


    // $ANTLR start "rule__Entity__Group_2__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1000:1: rule__Entity__Group_2__0 : rule__Entity__Group_2__0__Impl rule__Entity__Group_2__1 ;
    public final void rule__Entity__Group_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1004:1: ( rule__Entity__Group_2__0__Impl rule__Entity__Group_2__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1005:2: rule__Entity__Group_2__0__Impl rule__Entity__Group_2__1
            {
            pushFollow(FOLLOW_rule__Entity__Group_2__0__Impl_in_rule__Entity__Group_2__01972);
            rule__Entity__Group_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group_2__1_in_rule__Entity__Group_2__01975);
            rule__Entity__Group_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__0"


    // $ANTLR start "rule__Entity__Group_2__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1012:1: rule__Entity__Group_2__0__Impl : ( 'extends' ) ;
    public final void rule__Entity__Group_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1016:1: ( ( 'extends' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1017:1: ( 'extends' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1017:1: ( 'extends' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1018:1: 'extends'
            {
             before(grammarAccess.getEntityAccess().getExtendsKeyword_2_0()); 
            match(input,18,FOLLOW_18_in_rule__Entity__Group_2__0__Impl2003); 
             after(grammarAccess.getEntityAccess().getExtendsKeyword_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__0__Impl"


    // $ANTLR start "rule__Entity__Group_2__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1031:1: rule__Entity__Group_2__1 : rule__Entity__Group_2__1__Impl ;
    public final void rule__Entity__Group_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1035:1: ( rule__Entity__Group_2__1__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1036:2: rule__Entity__Group_2__1__Impl
            {
            pushFollow(FOLLOW_rule__Entity__Group_2__1__Impl_in_rule__Entity__Group_2__12034);
            rule__Entity__Group_2__1__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__1"


    // $ANTLR start "rule__Entity__Group_2__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1042:1: rule__Entity__Group_2__1__Impl : ( ( rule__Entity__SuperEntityAssignment_2_1 ) ) ;
    public final void rule__Entity__Group_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1046:1: ( ( ( rule__Entity__SuperEntityAssignment_2_1 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1047:1: ( ( rule__Entity__SuperEntityAssignment_2_1 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1047:1: ( ( rule__Entity__SuperEntityAssignment_2_1 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1048:1: ( rule__Entity__SuperEntityAssignment_2_1 )
            {
             before(grammarAccess.getEntityAccess().getSuperEntityAssignment_2_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1049:1: ( rule__Entity__SuperEntityAssignment_2_1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1049:2: rule__Entity__SuperEntityAssignment_2_1
            {
            pushFollow(FOLLOW_rule__Entity__SuperEntityAssignment_2_1_in_rule__Entity__Group_2__1__Impl2061);
            rule__Entity__SuperEntityAssignment_2_1();

            state._fsp--;


            }

             after(grammarAccess.getEntityAccess().getSuperEntityAssignment_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_2__1__Impl"


    // $ANTLR start "rule__Entity__Group_5__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1063:1: rule__Entity__Group_5__0 : rule__Entity__Group_5__0__Impl rule__Entity__Group_5__1 ;
    public final void rule__Entity__Group_5__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1067:1: ( rule__Entity__Group_5__0__Impl rule__Entity__Group_5__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1068:2: rule__Entity__Group_5__0__Impl rule__Entity__Group_5__1
            {
            pushFollow(FOLLOW_rule__Entity__Group_5__0__Impl_in_rule__Entity__Group_5__02095);
            rule__Entity__Group_5__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group_5__1_in_rule__Entity__Group_5__02098);
            rule__Entity__Group_5__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__0"


    // $ANTLR start "rule__Entity__Group_5__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1075:1: rule__Entity__Group_5__0__Impl : ( 'functions' ) ;
    public final void rule__Entity__Group_5__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1079:1: ( ( 'functions' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1080:1: ( 'functions' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1080:1: ( 'functions' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1081:1: 'functions'
            {
             before(grammarAccess.getEntityAccess().getFunctionsKeyword_5_0()); 
            match(input,19,FOLLOW_19_in_rule__Entity__Group_5__0__Impl2126); 
             after(grammarAccess.getEntityAccess().getFunctionsKeyword_5_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__0__Impl"


    // $ANTLR start "rule__Entity__Group_5__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1094:1: rule__Entity__Group_5__1 : rule__Entity__Group_5__1__Impl rule__Entity__Group_5__2 ;
    public final void rule__Entity__Group_5__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1098:1: ( rule__Entity__Group_5__1__Impl rule__Entity__Group_5__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1099:2: rule__Entity__Group_5__1__Impl rule__Entity__Group_5__2
            {
            pushFollow(FOLLOW_rule__Entity__Group_5__1__Impl_in_rule__Entity__Group_5__12157);
            rule__Entity__Group_5__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group_5__2_in_rule__Entity__Group_5__12160);
            rule__Entity__Group_5__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__1"


    // $ANTLR start "rule__Entity__Group_5__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1106:1: rule__Entity__Group_5__1__Impl : ( '{' ) ;
    public final void rule__Entity__Group_5__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1110:1: ( ( '{' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1111:1: ( '{' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1111:1: ( '{' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1112:1: '{'
            {
             before(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_5_1()); 
            match(input,12,FOLLOW_12_in_rule__Entity__Group_5__1__Impl2188); 
             after(grammarAccess.getEntityAccess().getLeftCurlyBracketKeyword_5_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__1__Impl"


    // $ANTLR start "rule__Entity__Group_5__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1125:1: rule__Entity__Group_5__2 : rule__Entity__Group_5__2__Impl rule__Entity__Group_5__3 ;
    public final void rule__Entity__Group_5__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1129:1: ( rule__Entity__Group_5__2__Impl rule__Entity__Group_5__3 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1130:2: rule__Entity__Group_5__2__Impl rule__Entity__Group_5__3
            {
            pushFollow(FOLLOW_rule__Entity__Group_5__2__Impl_in_rule__Entity__Group_5__22219);
            rule__Entity__Group_5__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Entity__Group_5__3_in_rule__Entity__Group_5__22222);
            rule__Entity__Group_5__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__2"


    // $ANTLR start "rule__Entity__Group_5__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1137:1: rule__Entity__Group_5__2__Impl : ( ( rule__Entity__FunctionsAssignment_5_2 )* ) ;
    public final void rule__Entity__Group_5__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1141:1: ( ( ( rule__Entity__FunctionsAssignment_5_2 )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1142:1: ( ( rule__Entity__FunctionsAssignment_5_2 )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1142:1: ( ( rule__Entity__FunctionsAssignment_5_2 )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1143:1: ( rule__Entity__FunctionsAssignment_5_2 )*
            {
             before(grammarAccess.getEntityAccess().getFunctionsAssignment_5_2()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1144:1: ( rule__Entity__FunctionsAssignment_5_2 )*
            loop10:
            do {
                int alt10=2;
                int LA10_0 = input.LA(1);

                if ( (LA10_0==RULE_ID||LA10_0==20) ) {
                    alt10=1;
                }


                switch (alt10) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1144:2: rule__Entity__FunctionsAssignment_5_2
            	    {
            	    pushFollow(FOLLOW_rule__Entity__FunctionsAssignment_5_2_in_rule__Entity__Group_5__2__Impl2249);
            	    rule__Entity__FunctionsAssignment_5_2();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop10;
                }
            } while (true);

             after(grammarAccess.getEntityAccess().getFunctionsAssignment_5_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__2__Impl"


    // $ANTLR start "rule__Entity__Group_5__3"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1154:1: rule__Entity__Group_5__3 : rule__Entity__Group_5__3__Impl ;
    public final void rule__Entity__Group_5__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1158:1: ( rule__Entity__Group_5__3__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1159:2: rule__Entity__Group_5__3__Impl
            {
            pushFollow(FOLLOW_rule__Entity__Group_5__3__Impl_in_rule__Entity__Group_5__32280);
            rule__Entity__Group_5__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__3"


    // $ANTLR start "rule__Entity__Group_5__3__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1165:1: rule__Entity__Group_5__3__Impl : ( '}' ) ;
    public final void rule__Entity__Group_5__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1169:1: ( ( '}' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1170:1: ( '}' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1170:1: ( '}' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1171:1: '}'
            {
             before(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5_3()); 
            match(input,13,FOLLOW_13_in_rule__Entity__Group_5__3__Impl2308); 
             after(grammarAccess.getEntityAccess().getRightCurlyBracketKeyword_5_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__Group_5__3__Impl"


    // $ANTLR start "rule__Attribute__Group__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1192:1: rule__Attribute__Group__0 : rule__Attribute__Group__0__Impl rule__Attribute__Group__1 ;
    public final void rule__Attribute__Group__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1196:1: ( rule__Attribute__Group__0__Impl rule__Attribute__Group__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1197:2: rule__Attribute__Group__0__Impl rule__Attribute__Group__1
            {
            pushFollow(FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__02347);
            rule__Attribute__Group__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__02350);
            rule__Attribute__Group__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__0"


    // $ANTLR start "rule__Attribute__Group__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1204:1: rule__Attribute__Group__0__Impl : ( ( rule__Attribute__TypeAssignment_0 ) ) ;
    public final void rule__Attribute__Group__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1208:1: ( ( ( rule__Attribute__TypeAssignment_0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1209:1: ( ( rule__Attribute__TypeAssignment_0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1209:1: ( ( rule__Attribute__TypeAssignment_0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1210:1: ( rule__Attribute__TypeAssignment_0 )
            {
             before(grammarAccess.getAttributeAccess().getTypeAssignment_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1211:1: ( rule__Attribute__TypeAssignment_0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1211:2: rule__Attribute__TypeAssignment_0
            {
            pushFollow(FOLLOW_rule__Attribute__TypeAssignment_0_in_rule__Attribute__Group__0__Impl2377);
            rule__Attribute__TypeAssignment_0();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getTypeAssignment_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__0__Impl"


    // $ANTLR start "rule__Attribute__Group__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1221:1: rule__Attribute__Group__1 : rule__Attribute__Group__1__Impl rule__Attribute__Group__2 ;
    public final void rule__Attribute__Group__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1225:1: ( rule__Attribute__Group__1__Impl rule__Attribute__Group__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1226:2: rule__Attribute__Group__1__Impl rule__Attribute__Group__2
            {
            pushFollow(FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__12407);
            rule__Attribute__Group__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__12410);
            rule__Attribute__Group__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__1"


    // $ANTLR start "rule__Attribute__Group__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1233:1: rule__Attribute__Group__1__Impl : ( ( rule__Attribute__ManyAssignment_1 )? ) ;
    public final void rule__Attribute__Group__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1237:1: ( ( ( rule__Attribute__ManyAssignment_1 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1238:1: ( ( rule__Attribute__ManyAssignment_1 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1238:1: ( ( rule__Attribute__ManyAssignment_1 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1239:1: ( rule__Attribute__ManyAssignment_1 )?
            {
             before(grammarAccess.getAttributeAccess().getManyAssignment_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1240:1: ( rule__Attribute__ManyAssignment_1 )?
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==23) ) {
                alt11=1;
            }
            switch (alt11) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1240:2: rule__Attribute__ManyAssignment_1
                    {
                    pushFollow(FOLLOW_rule__Attribute__ManyAssignment_1_in_rule__Attribute__Group__1__Impl2437);
                    rule__Attribute__ManyAssignment_1();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getAttributeAccess().getManyAssignment_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__1__Impl"


    // $ANTLR start "rule__Attribute__Group__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1250:1: rule__Attribute__Group__2 : rule__Attribute__Group__2__Impl ;
    public final void rule__Attribute__Group__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1254:1: ( rule__Attribute__Group__2__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1255:2: rule__Attribute__Group__2__Impl
            {
            pushFollow(FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__22468);
            rule__Attribute__Group__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__2"


    // $ANTLR start "rule__Attribute__Group__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1261:1: rule__Attribute__Group__2__Impl : ( ( rule__Attribute__NameAssignment_2 ) ) ;
    public final void rule__Attribute__Group__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1265:1: ( ( ( rule__Attribute__NameAssignment_2 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1266:1: ( ( rule__Attribute__NameAssignment_2 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1266:1: ( ( rule__Attribute__NameAssignment_2 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1267:1: ( rule__Attribute__NameAssignment_2 )
            {
             before(grammarAccess.getAttributeAccess().getNameAssignment_2()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1268:1: ( rule__Attribute__NameAssignment_2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1268:2: rule__Attribute__NameAssignment_2
            {
            pushFollow(FOLLOW_rule__Attribute__NameAssignment_2_in_rule__Attribute__Group__2__Impl2495);
            rule__Attribute__NameAssignment_2();

            state._fsp--;


            }

             after(grammarAccess.getAttributeAccess().getNameAssignment_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__Group__2__Impl"


    // $ANTLR start "rule__Function__Group_0__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1284:1: rule__Function__Group_0__0 : rule__Function__Group_0__0__Impl rule__Function__Group_0__1 ;
    public final void rule__Function__Group_0__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1288:1: ( rule__Function__Group_0__0__Impl rule__Function__Group_0__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1289:2: rule__Function__Group_0__0__Impl rule__Function__Group_0__1
            {
            pushFollow(FOLLOW_rule__Function__Group_0__0__Impl_in_rule__Function__Group_0__02531);
            rule__Function__Group_0__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_0__1_in_rule__Function__Group_0__02534);
            rule__Function__Group_0__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0__0"


    // $ANTLR start "rule__Function__Group_0__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1296:1: rule__Function__Group_0__0__Impl : ( 'void' ) ;
    public final void rule__Function__Group_0__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1300:1: ( ( 'void' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1301:1: ( 'void' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1301:1: ( 'void' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1302:1: 'void'
            {
             before(grammarAccess.getFunctionAccess().getVoidKeyword_0_0()); 
            match(input,20,FOLLOW_20_in_rule__Function__Group_0__0__Impl2562); 
             after(grammarAccess.getFunctionAccess().getVoidKeyword_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0__0__Impl"


    // $ANTLR start "rule__Function__Group_0__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1315:1: rule__Function__Group_0__1 : rule__Function__Group_0__1__Impl rule__Function__Group_0__2 ;
    public final void rule__Function__Group_0__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1319:1: ( rule__Function__Group_0__1__Impl rule__Function__Group_0__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1320:2: rule__Function__Group_0__1__Impl rule__Function__Group_0__2
            {
            pushFollow(FOLLOW_rule__Function__Group_0__1__Impl_in_rule__Function__Group_0__12593);
            rule__Function__Group_0__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_0__2_in_rule__Function__Group_0__12596);
            rule__Function__Group_0__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0__1"


    // $ANTLR start "rule__Function__Group_0__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1327:1: rule__Function__Group_0__1__Impl : ( ( rule__Function__NameAssignment_0_1 ) ) ;
    public final void rule__Function__Group_0__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1331:1: ( ( ( rule__Function__NameAssignment_0_1 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1332:1: ( ( rule__Function__NameAssignment_0_1 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1332:1: ( ( rule__Function__NameAssignment_0_1 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1333:1: ( rule__Function__NameAssignment_0_1 )
            {
             before(grammarAccess.getFunctionAccess().getNameAssignment_0_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1334:1: ( rule__Function__NameAssignment_0_1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1334:2: rule__Function__NameAssignment_0_1
            {
            pushFollow(FOLLOW_rule__Function__NameAssignment_0_1_in_rule__Function__Group_0__1__Impl2623);
            rule__Function__NameAssignment_0_1();

            state._fsp--;


            }

             after(grammarAccess.getFunctionAccess().getNameAssignment_0_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0__1__Impl"


    // $ANTLR start "rule__Function__Group_0__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1344:1: rule__Function__Group_0__2 : rule__Function__Group_0__2__Impl ;
    public final void rule__Function__Group_0__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1348:1: ( rule__Function__Group_0__2__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1349:2: rule__Function__Group_0__2__Impl
            {
            pushFollow(FOLLOW_rule__Function__Group_0__2__Impl_in_rule__Function__Group_0__22653);
            rule__Function__Group_0__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0__2"


    // $ANTLR start "rule__Function__Group_0__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1355:1: rule__Function__Group_0__2__Impl : ( ( rule__Function__Group_0_2__0 )? ) ;
    public final void rule__Function__Group_0__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1359:1: ( ( ( rule__Function__Group_0_2__0 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1360:1: ( ( rule__Function__Group_0_2__0 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1360:1: ( ( rule__Function__Group_0_2__0 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1361:1: ( rule__Function__Group_0_2__0 )?
            {
             before(grammarAccess.getFunctionAccess().getGroup_0_2()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1362:1: ( rule__Function__Group_0_2__0 )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==21) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1362:2: rule__Function__Group_0_2__0
                    {
                    pushFollow(FOLLOW_rule__Function__Group_0_2__0_in_rule__Function__Group_0__2__Impl2680);
                    rule__Function__Group_0_2__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getFunctionAccess().getGroup_0_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0__2__Impl"


    // $ANTLR start "rule__Function__Group_0_2__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1378:1: rule__Function__Group_0_2__0 : rule__Function__Group_0_2__0__Impl rule__Function__Group_0_2__1 ;
    public final void rule__Function__Group_0_2__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1382:1: ( rule__Function__Group_0_2__0__Impl rule__Function__Group_0_2__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1383:2: rule__Function__Group_0_2__0__Impl rule__Function__Group_0_2__1
            {
            pushFollow(FOLLOW_rule__Function__Group_0_2__0__Impl_in_rule__Function__Group_0_2__02717);
            rule__Function__Group_0_2__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_0_2__1_in_rule__Function__Group_0_2__02720);
            rule__Function__Group_0_2__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0_2__0"


    // $ANTLR start "rule__Function__Group_0_2__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1390:1: rule__Function__Group_0_2__0__Impl : ( '(' ) ;
    public final void rule__Function__Group_0_2__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1394:1: ( ( '(' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1395:1: ( '(' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1395:1: ( '(' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1396:1: '('
            {
             before(grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_0_2_0()); 
            match(input,21,FOLLOW_21_in_rule__Function__Group_0_2__0__Impl2748); 
             after(grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_0_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0_2__0__Impl"


    // $ANTLR start "rule__Function__Group_0_2__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1409:1: rule__Function__Group_0_2__1 : rule__Function__Group_0_2__1__Impl rule__Function__Group_0_2__2 ;
    public final void rule__Function__Group_0_2__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1413:1: ( rule__Function__Group_0_2__1__Impl rule__Function__Group_0_2__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1414:2: rule__Function__Group_0_2__1__Impl rule__Function__Group_0_2__2
            {
            pushFollow(FOLLOW_rule__Function__Group_0_2__1__Impl_in_rule__Function__Group_0_2__12779);
            rule__Function__Group_0_2__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_0_2__2_in_rule__Function__Group_0_2__12782);
            rule__Function__Group_0_2__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0_2__1"


    // $ANTLR start "rule__Function__Group_0_2__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1421:1: rule__Function__Group_0_2__1__Impl : ( ( rule__Function__ParametersAssignment_0_2_1 )* ) ;
    public final void rule__Function__Group_0_2__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1425:1: ( ( ( rule__Function__ParametersAssignment_0_2_1 )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1426:1: ( ( rule__Function__ParametersAssignment_0_2_1 )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1426:1: ( ( rule__Function__ParametersAssignment_0_2_1 )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1427:1: ( rule__Function__ParametersAssignment_0_2_1 )*
            {
             before(grammarAccess.getFunctionAccess().getParametersAssignment_0_2_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1428:1: ( rule__Function__ParametersAssignment_0_2_1 )*
            loop13:
            do {
                int alt13=2;
                int LA13_0 = input.LA(1);

                if ( (LA13_0==RULE_ID) ) {
                    alt13=1;
                }


                switch (alt13) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1428:2: rule__Function__ParametersAssignment_0_2_1
            	    {
            	    pushFollow(FOLLOW_rule__Function__ParametersAssignment_0_2_1_in_rule__Function__Group_0_2__1__Impl2809);
            	    rule__Function__ParametersAssignment_0_2_1();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop13;
                }
            } while (true);

             after(grammarAccess.getFunctionAccess().getParametersAssignment_0_2_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0_2__1__Impl"


    // $ANTLR start "rule__Function__Group_0_2__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1438:1: rule__Function__Group_0_2__2 : rule__Function__Group_0_2__2__Impl ;
    public final void rule__Function__Group_0_2__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1442:1: ( rule__Function__Group_0_2__2__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1443:2: rule__Function__Group_0_2__2__Impl
            {
            pushFollow(FOLLOW_rule__Function__Group_0_2__2__Impl_in_rule__Function__Group_0_2__22840);
            rule__Function__Group_0_2__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0_2__2"


    // $ANTLR start "rule__Function__Group_0_2__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1449:1: rule__Function__Group_0_2__2__Impl : ( ')' ) ;
    public final void rule__Function__Group_0_2__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1453:1: ( ( ')' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1454:1: ( ')' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1454:1: ( ')' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1455:1: ')'
            {
             before(grammarAccess.getFunctionAccess().getRightParenthesisKeyword_0_2_2()); 
            match(input,22,FOLLOW_22_in_rule__Function__Group_0_2__2__Impl2868); 
             after(grammarAccess.getFunctionAccess().getRightParenthesisKeyword_0_2_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_0_2__2__Impl"


    // $ANTLR start "rule__Function__Group_1__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1474:1: rule__Function__Group_1__0 : rule__Function__Group_1__0__Impl rule__Function__Group_1__1 ;
    public final void rule__Function__Group_1__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1478:1: ( rule__Function__Group_1__0__Impl rule__Function__Group_1__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1479:2: rule__Function__Group_1__0__Impl rule__Function__Group_1__1
            {
            pushFollow(FOLLOW_rule__Function__Group_1__0__Impl_in_rule__Function__Group_1__02905);
            rule__Function__Group_1__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_1__1_in_rule__Function__Group_1__02908);
            rule__Function__Group_1__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__0"


    // $ANTLR start "rule__Function__Group_1__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1486:1: rule__Function__Group_1__0__Impl : ( ( rule__Function__TypeAssignment_1_0 ) ) ;
    public final void rule__Function__Group_1__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1490:1: ( ( ( rule__Function__TypeAssignment_1_0 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1491:1: ( ( rule__Function__TypeAssignment_1_0 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1491:1: ( ( rule__Function__TypeAssignment_1_0 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1492:1: ( rule__Function__TypeAssignment_1_0 )
            {
             before(grammarAccess.getFunctionAccess().getTypeAssignment_1_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1493:1: ( rule__Function__TypeAssignment_1_0 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1493:2: rule__Function__TypeAssignment_1_0
            {
            pushFollow(FOLLOW_rule__Function__TypeAssignment_1_0_in_rule__Function__Group_1__0__Impl2935);
            rule__Function__TypeAssignment_1_0();

            state._fsp--;


            }

             after(grammarAccess.getFunctionAccess().getTypeAssignment_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__0__Impl"


    // $ANTLR start "rule__Function__Group_1__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1503:1: rule__Function__Group_1__1 : rule__Function__Group_1__1__Impl rule__Function__Group_1__2 ;
    public final void rule__Function__Group_1__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1507:1: ( rule__Function__Group_1__1__Impl rule__Function__Group_1__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1508:2: rule__Function__Group_1__1__Impl rule__Function__Group_1__2
            {
            pushFollow(FOLLOW_rule__Function__Group_1__1__Impl_in_rule__Function__Group_1__12965);
            rule__Function__Group_1__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_1__2_in_rule__Function__Group_1__12968);
            rule__Function__Group_1__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__1"


    // $ANTLR start "rule__Function__Group_1__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1515:1: rule__Function__Group_1__1__Impl : ( ( rule__Function__ManyAssignment_1_1 )? ) ;
    public final void rule__Function__Group_1__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1519:1: ( ( ( rule__Function__ManyAssignment_1_1 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1520:1: ( ( rule__Function__ManyAssignment_1_1 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1520:1: ( ( rule__Function__ManyAssignment_1_1 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1521:1: ( rule__Function__ManyAssignment_1_1 )?
            {
             before(grammarAccess.getFunctionAccess().getManyAssignment_1_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1522:1: ( rule__Function__ManyAssignment_1_1 )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==23) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1522:2: rule__Function__ManyAssignment_1_1
                    {
                    pushFollow(FOLLOW_rule__Function__ManyAssignment_1_1_in_rule__Function__Group_1__1__Impl2995);
                    rule__Function__ManyAssignment_1_1();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getFunctionAccess().getManyAssignment_1_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__1__Impl"


    // $ANTLR start "rule__Function__Group_1__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1532:1: rule__Function__Group_1__2 : rule__Function__Group_1__2__Impl rule__Function__Group_1__3 ;
    public final void rule__Function__Group_1__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1536:1: ( rule__Function__Group_1__2__Impl rule__Function__Group_1__3 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1537:2: rule__Function__Group_1__2__Impl rule__Function__Group_1__3
            {
            pushFollow(FOLLOW_rule__Function__Group_1__2__Impl_in_rule__Function__Group_1__23026);
            rule__Function__Group_1__2__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_1__3_in_rule__Function__Group_1__23029);
            rule__Function__Group_1__3();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__2"


    // $ANTLR start "rule__Function__Group_1__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1544:1: rule__Function__Group_1__2__Impl : ( ( rule__Function__NameAssignment_1_2 ) ) ;
    public final void rule__Function__Group_1__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1548:1: ( ( ( rule__Function__NameAssignment_1_2 ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1549:1: ( ( rule__Function__NameAssignment_1_2 ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1549:1: ( ( rule__Function__NameAssignment_1_2 ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1550:1: ( rule__Function__NameAssignment_1_2 )
            {
             before(grammarAccess.getFunctionAccess().getNameAssignment_1_2()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1551:1: ( rule__Function__NameAssignment_1_2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1551:2: rule__Function__NameAssignment_1_2
            {
            pushFollow(FOLLOW_rule__Function__NameAssignment_1_2_in_rule__Function__Group_1__2__Impl3056);
            rule__Function__NameAssignment_1_2();

            state._fsp--;


            }

             after(grammarAccess.getFunctionAccess().getNameAssignment_1_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__2__Impl"


    // $ANTLR start "rule__Function__Group_1__3"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1561:1: rule__Function__Group_1__3 : rule__Function__Group_1__3__Impl ;
    public final void rule__Function__Group_1__3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1565:1: ( rule__Function__Group_1__3__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1566:2: rule__Function__Group_1__3__Impl
            {
            pushFollow(FOLLOW_rule__Function__Group_1__3__Impl_in_rule__Function__Group_1__33086);
            rule__Function__Group_1__3__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__3"


    // $ANTLR start "rule__Function__Group_1__3__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1572:1: rule__Function__Group_1__3__Impl : ( ( rule__Function__Group_1_3__0 )? ) ;
    public final void rule__Function__Group_1__3__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1576:1: ( ( ( rule__Function__Group_1_3__0 )? ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1577:1: ( ( rule__Function__Group_1_3__0 )? )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1577:1: ( ( rule__Function__Group_1_3__0 )? )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1578:1: ( rule__Function__Group_1_3__0 )?
            {
             before(grammarAccess.getFunctionAccess().getGroup_1_3()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1579:1: ( rule__Function__Group_1_3__0 )?
            int alt15=2;
            int LA15_0 = input.LA(1);

            if ( (LA15_0==21) ) {
                alt15=1;
            }
            switch (alt15) {
                case 1 :
                    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1579:2: rule__Function__Group_1_3__0
                    {
                    pushFollow(FOLLOW_rule__Function__Group_1_3__0_in_rule__Function__Group_1__3__Impl3113);
                    rule__Function__Group_1_3__0();

                    state._fsp--;


                    }
                    break;

            }

             after(grammarAccess.getFunctionAccess().getGroup_1_3()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1__3__Impl"


    // $ANTLR start "rule__Function__Group_1_3__0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1597:1: rule__Function__Group_1_3__0 : rule__Function__Group_1_3__0__Impl rule__Function__Group_1_3__1 ;
    public final void rule__Function__Group_1_3__0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1601:1: ( rule__Function__Group_1_3__0__Impl rule__Function__Group_1_3__1 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1602:2: rule__Function__Group_1_3__0__Impl rule__Function__Group_1_3__1
            {
            pushFollow(FOLLOW_rule__Function__Group_1_3__0__Impl_in_rule__Function__Group_1_3__03152);
            rule__Function__Group_1_3__0__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_1_3__1_in_rule__Function__Group_1_3__03155);
            rule__Function__Group_1_3__1();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1_3__0"


    // $ANTLR start "rule__Function__Group_1_3__0__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1609:1: rule__Function__Group_1_3__0__Impl : ( '(' ) ;
    public final void rule__Function__Group_1_3__0__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1613:1: ( ( '(' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1614:1: ( '(' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1614:1: ( '(' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1615:1: '('
            {
             before(grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_1_3_0()); 
            match(input,21,FOLLOW_21_in_rule__Function__Group_1_3__0__Impl3183); 
             after(grammarAccess.getFunctionAccess().getLeftParenthesisKeyword_1_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1_3__0__Impl"


    // $ANTLR start "rule__Function__Group_1_3__1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1628:1: rule__Function__Group_1_3__1 : rule__Function__Group_1_3__1__Impl rule__Function__Group_1_3__2 ;
    public final void rule__Function__Group_1_3__1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1632:1: ( rule__Function__Group_1_3__1__Impl rule__Function__Group_1_3__2 )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1633:2: rule__Function__Group_1_3__1__Impl rule__Function__Group_1_3__2
            {
            pushFollow(FOLLOW_rule__Function__Group_1_3__1__Impl_in_rule__Function__Group_1_3__13214);
            rule__Function__Group_1_3__1__Impl();

            state._fsp--;

            pushFollow(FOLLOW_rule__Function__Group_1_3__2_in_rule__Function__Group_1_3__13217);
            rule__Function__Group_1_3__2();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1_3__1"


    // $ANTLR start "rule__Function__Group_1_3__1__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1640:1: rule__Function__Group_1_3__1__Impl : ( ( rule__Function__ParametersAssignment_1_3_1 )* ) ;
    public final void rule__Function__Group_1_3__1__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1644:1: ( ( ( rule__Function__ParametersAssignment_1_3_1 )* ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1645:1: ( ( rule__Function__ParametersAssignment_1_3_1 )* )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1645:1: ( ( rule__Function__ParametersAssignment_1_3_1 )* )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1646:1: ( rule__Function__ParametersAssignment_1_3_1 )*
            {
             before(grammarAccess.getFunctionAccess().getParametersAssignment_1_3_1()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1647:1: ( rule__Function__ParametersAssignment_1_3_1 )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==RULE_ID) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1647:2: rule__Function__ParametersAssignment_1_3_1
            	    {
            	    pushFollow(FOLLOW_rule__Function__ParametersAssignment_1_3_1_in_rule__Function__Group_1_3__1__Impl3244);
            	    rule__Function__ParametersAssignment_1_3_1();

            	    state._fsp--;


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);

             after(grammarAccess.getFunctionAccess().getParametersAssignment_1_3_1()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1_3__1__Impl"


    // $ANTLR start "rule__Function__Group_1_3__2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1657:1: rule__Function__Group_1_3__2 : rule__Function__Group_1_3__2__Impl ;
    public final void rule__Function__Group_1_3__2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1661:1: ( rule__Function__Group_1_3__2__Impl )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1662:2: rule__Function__Group_1_3__2__Impl
            {
            pushFollow(FOLLOW_rule__Function__Group_1_3__2__Impl_in_rule__Function__Group_1_3__23275);
            rule__Function__Group_1_3__2__Impl();

            state._fsp--;


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1_3__2"


    // $ANTLR start "rule__Function__Group_1_3__2__Impl"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1668:1: rule__Function__Group_1_3__2__Impl : ( ')' ) ;
    public final void rule__Function__Group_1_3__2__Impl() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1672:1: ( ( ')' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1673:1: ( ')' )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1673:1: ( ')' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1674:1: ')'
            {
             before(grammarAccess.getFunctionAccess().getRightParenthesisKeyword_1_3_2()); 
            match(input,22,FOLLOW_22_in_rule__Function__Group_1_3__2__Impl3303); 
             after(grammarAccess.getFunctionAccess().getRightParenthesisKeyword_1_3_2()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__Group_1_3__2__Impl"


    // $ANTLR start "rule__Model__TypesAssignment"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1694:1: rule__Model__TypesAssignment : ( ruleType ) ;
    public final void rule__Model__TypesAssignment() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1698:1: ( ( ruleType ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1699:1: ( ruleType )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1699:1: ( ruleType )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1700:1: ruleType
            {
             before(grammarAccess.getModelAccess().getTypesTypeParserRuleCall_0()); 
            pushFollow(FOLLOW_ruleType_in_rule__Model__TypesAssignment3345);
            ruleType();

            state._fsp--;

             after(grammarAccess.getModelAccess().getTypesTypeParserRuleCall_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Model__TypesAssignment"


    // $ANTLR start "rule__Package__NameAssignment_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1709:1: rule__Package__NameAssignment_1 : ( ruleJAVAID ) ;
    public final void rule__Package__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1713:1: ( ( ruleJAVAID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1714:1: ( ruleJAVAID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1714:1: ( ruleJAVAID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1715:1: ruleJAVAID
            {
             before(grammarAccess.getPackageAccess().getNameJAVAIDParserRuleCall_1_0()); 
            pushFollow(FOLLOW_ruleJAVAID_in_rule__Package__NameAssignment_13376);
            ruleJAVAID();

            state._fsp--;

             after(grammarAccess.getPackageAccess().getNameJAVAIDParserRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__NameAssignment_1"


    // $ANTLR start "rule__Package__TypesAssignment_3"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1724:1: rule__Package__TypesAssignment_3 : ( ruleType ) ;
    public final void rule__Package__TypesAssignment_3() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1728:1: ( ( ruleType ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1729:1: ( ruleType )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1729:1: ( ruleType )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1730:1: ruleType
            {
             before(grammarAccess.getPackageAccess().getTypesTypeParserRuleCall_3_0()); 
            pushFollow(FOLLOW_ruleType_in_rule__Package__TypesAssignment_33407);
            ruleType();

            state._fsp--;

             after(grammarAccess.getPackageAccess().getTypesTypeParserRuleCall_3_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Package__TypesAssignment_3"


    // $ANTLR start "rule__TypeDef__NameAssignment_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1739:1: rule__TypeDef__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__TypeDef__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1743:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1744:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1744:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1745:1: RULE_ID
            {
             before(grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__TypeDef__NameAssignment_13438); 
             after(grammarAccess.getTypeDefAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__NameAssignment_1"


    // $ANTLR start "rule__TypeDef__MappedTypeAssignment_2_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1754:1: rule__TypeDef__MappedTypeAssignment_2_1 : ( ruleJAVAID ) ;
    public final void rule__TypeDef__MappedTypeAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1758:1: ( ( ruleJAVAID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1759:1: ( ruleJAVAID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1759:1: ( ruleJAVAID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1760:1: ruleJAVAID
            {
             before(grammarAccess.getTypeDefAccess().getMappedTypeJAVAIDParserRuleCall_2_1_0()); 
            pushFollow(FOLLOW_ruleJAVAID_in_rule__TypeDef__MappedTypeAssignment_2_13469);
            ruleJAVAID();

            state._fsp--;

             after(grammarAccess.getTypeDefAccess().getMappedTypeJAVAIDParserRuleCall_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__TypeDef__MappedTypeAssignment_2_1"


    // $ANTLR start "rule__Entity__NameAssignment_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1769:1: rule__Entity__NameAssignment_1 : ( RULE_ID ) ;
    public final void rule__Entity__NameAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1773:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1774:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1774:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1775:1: RULE_ID
            {
             before(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Entity__NameAssignment_13500); 
             after(grammarAccess.getEntityAccess().getNameIDTerminalRuleCall_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__NameAssignment_1"


    // $ANTLR start "rule__Entity__SuperEntityAssignment_2_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1784:1: rule__Entity__SuperEntityAssignment_2_1 : ( ( RULE_ID ) ) ;
    public final void rule__Entity__SuperEntityAssignment_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1788:1: ( ( ( RULE_ID ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1789:1: ( ( RULE_ID ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1789:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1790:1: ( RULE_ID )
            {
             before(grammarAccess.getEntityAccess().getSuperEntityEntityCrossReference_2_1_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1791:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1792:1: RULE_ID
            {
             before(grammarAccess.getEntityAccess().getSuperEntityEntityIDTerminalRuleCall_2_1_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Entity__SuperEntityAssignment_2_13535); 
             after(grammarAccess.getEntityAccess().getSuperEntityEntityIDTerminalRuleCall_2_1_0_1()); 

            }

             after(grammarAccess.getEntityAccess().getSuperEntityEntityCrossReference_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__SuperEntityAssignment_2_1"


    // $ANTLR start "rule__Entity__AttributesAssignment_4"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1803:1: rule__Entity__AttributesAssignment_4 : ( ruleAttribute ) ;
    public final void rule__Entity__AttributesAssignment_4() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1807:1: ( ( ruleAttribute ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1808:1: ( ruleAttribute )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1808:1: ( ruleAttribute )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1809:1: ruleAttribute
            {
             before(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 
            pushFollow(FOLLOW_ruleAttribute_in_rule__Entity__AttributesAssignment_43570);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getEntityAccess().getAttributesAttributeParserRuleCall_4_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__AttributesAssignment_4"


    // $ANTLR start "rule__Entity__FunctionsAssignment_5_2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1818:1: rule__Entity__FunctionsAssignment_5_2 : ( ruleFunction ) ;
    public final void rule__Entity__FunctionsAssignment_5_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1822:1: ( ( ruleFunction ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1823:1: ( ruleFunction )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1823:1: ( ruleFunction )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1824:1: ruleFunction
            {
             before(grammarAccess.getEntityAccess().getFunctionsFunctionParserRuleCall_5_2_0()); 
            pushFollow(FOLLOW_ruleFunction_in_rule__Entity__FunctionsAssignment_5_23601);
            ruleFunction();

            state._fsp--;

             after(grammarAccess.getEntityAccess().getFunctionsFunctionParserRuleCall_5_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Entity__FunctionsAssignment_5_2"


    // $ANTLR start "rule__Attribute__TypeAssignment_0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1833:1: rule__Attribute__TypeAssignment_0 : ( ( RULE_ID ) ) ;
    public final void rule__Attribute__TypeAssignment_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1837:1: ( ( ( RULE_ID ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1838:1: ( ( RULE_ID ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1838:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1839:1: ( RULE_ID )
            {
             before(grammarAccess.getAttributeAccess().getTypeTypeCrossReference_0_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1840:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1841:1: RULE_ID
            {
             before(grammarAccess.getAttributeAccess().getTypeTypeIDTerminalRuleCall_0_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Attribute__TypeAssignment_03636); 
             after(grammarAccess.getAttributeAccess().getTypeTypeIDTerminalRuleCall_0_0_1()); 

            }

             after(grammarAccess.getAttributeAccess().getTypeTypeCrossReference_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__TypeAssignment_0"


    // $ANTLR start "rule__Attribute__ManyAssignment_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1852:1: rule__Attribute__ManyAssignment_1 : ( ( '*' ) ) ;
    public final void rule__Attribute__ManyAssignment_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1856:1: ( ( ( '*' ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1857:1: ( ( '*' ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1857:1: ( ( '*' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1858:1: ( '*' )
            {
             before(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1859:1: ( '*' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1860:1: '*'
            {
             before(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 
            match(input,23,FOLLOW_23_in_rule__Attribute__ManyAssignment_13676); 
             after(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 

            }

             after(grammarAccess.getAttributeAccess().getManyAsteriskKeyword_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__ManyAssignment_1"


    // $ANTLR start "rule__Attribute__NameAssignment_2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1875:1: rule__Attribute__NameAssignment_2 : ( RULE_ID ) ;
    public final void rule__Attribute__NameAssignment_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1879:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1880:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1880:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1881:1: RULE_ID
            {
             before(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_2_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_23715); 
             after(grammarAccess.getAttributeAccess().getNameIDTerminalRuleCall_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Attribute__NameAssignment_2"


    // $ANTLR start "rule__Function__NameAssignment_0_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1890:1: rule__Function__NameAssignment_0_1 : ( RULE_ID ) ;
    public final void rule__Function__NameAssignment_0_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1894:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1895:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1895:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1896:1: RULE_ID
            {
             before(grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_0_1_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Function__NameAssignment_0_13746); 
             after(grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_0_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__NameAssignment_0_1"


    // $ANTLR start "rule__Function__ParametersAssignment_0_2_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1905:1: rule__Function__ParametersAssignment_0_2_1 : ( ruleAttribute ) ;
    public final void rule__Function__ParametersAssignment_0_2_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1909:1: ( ( ruleAttribute ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1910:1: ( ruleAttribute )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1910:1: ( ruleAttribute )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1911:1: ruleAttribute
            {
             before(grammarAccess.getFunctionAccess().getParametersAttributeParserRuleCall_0_2_1_0()); 
            pushFollow(FOLLOW_ruleAttribute_in_rule__Function__ParametersAssignment_0_2_13777);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getFunctionAccess().getParametersAttributeParserRuleCall_0_2_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__ParametersAssignment_0_2_1"


    // $ANTLR start "rule__Function__TypeAssignment_1_0"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1920:1: rule__Function__TypeAssignment_1_0 : ( ( RULE_ID ) ) ;
    public final void rule__Function__TypeAssignment_1_0() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1924:1: ( ( ( RULE_ID ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1925:1: ( ( RULE_ID ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1925:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1926:1: ( RULE_ID )
            {
             before(grammarAccess.getFunctionAccess().getTypeTypeCrossReference_1_0_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1927:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1928:1: RULE_ID
            {
             before(grammarAccess.getFunctionAccess().getTypeTypeIDTerminalRuleCall_1_0_0_1()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Function__TypeAssignment_1_03812); 
             after(grammarAccess.getFunctionAccess().getTypeTypeIDTerminalRuleCall_1_0_0_1()); 

            }

             after(grammarAccess.getFunctionAccess().getTypeTypeCrossReference_1_0_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__TypeAssignment_1_0"


    // $ANTLR start "rule__Function__ManyAssignment_1_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1939:1: rule__Function__ManyAssignment_1_1 : ( ( '*' ) ) ;
    public final void rule__Function__ManyAssignment_1_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1943:1: ( ( ( '*' ) ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1944:1: ( ( '*' ) )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1944:1: ( ( '*' ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1945:1: ( '*' )
            {
             before(grammarAccess.getFunctionAccess().getManyAsteriskKeyword_1_1_0()); 
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1946:1: ( '*' )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1947:1: '*'
            {
             before(grammarAccess.getFunctionAccess().getManyAsteriskKeyword_1_1_0()); 
            match(input,23,FOLLOW_23_in_rule__Function__ManyAssignment_1_13852); 
             after(grammarAccess.getFunctionAccess().getManyAsteriskKeyword_1_1_0()); 

            }

             after(grammarAccess.getFunctionAccess().getManyAsteriskKeyword_1_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__ManyAssignment_1_1"


    // $ANTLR start "rule__Function__NameAssignment_1_2"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1962:1: rule__Function__NameAssignment_1_2 : ( RULE_ID ) ;
    public final void rule__Function__NameAssignment_1_2() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1966:1: ( ( RULE_ID ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1967:1: ( RULE_ID )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1967:1: ( RULE_ID )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1968:1: RULE_ID
            {
             before(grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_1_2_0()); 
            match(input,RULE_ID,FOLLOW_RULE_ID_in_rule__Function__NameAssignment_1_23891); 
             after(grammarAccess.getFunctionAccess().getNameIDTerminalRuleCall_1_2_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__NameAssignment_1_2"


    // $ANTLR start "rule__Function__ParametersAssignment_1_3_1"
    // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1977:1: rule__Function__ParametersAssignment_1_3_1 : ( ruleAttribute ) ;
    public final void rule__Function__ParametersAssignment_1_3_1() throws RecognitionException {

        		int stackSize = keepStackSize();
            
        try {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1981:1: ( ( ruleAttribute ) )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1982:1: ( ruleAttribute )
            {
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1982:1: ( ruleAttribute )
            // ../org.xtext.tcc.dsl.ui/src-gen/org/xtext/tcc/ui/contentassist/antlr/internal/InternalTccdsl.g:1983:1: ruleAttribute
            {
             before(grammarAccess.getFunctionAccess().getParametersAttributeParserRuleCall_1_3_1_0()); 
            pushFollow(FOLLOW_ruleAttribute_in_rule__Function__ParametersAssignment_1_3_13922);
            ruleAttribute();

            state._fsp--;

             after(grammarAccess.getFunctionAccess().getParametersAttributeParserRuleCall_1_3_1_0()); 

            }


            }

        }
        catch (RecognitionException re) {
            reportError(re);
            recover(input,re);
        }
        finally {

            	restoreStackSize(stackSize);

        }
        return ;
    }
    // $ANTLR end "rule__Function__ParametersAssignment_1_3_1"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel61 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel68 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Model__TypesAssignment_in_ruleModel94 = new BitSet(new long[]{0x0000000000024802L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType122 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Type__Alternatives_in_ruleType155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_entryRulePackage182 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePackage189 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__0_in_rulePackage215 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_entryRuleTypeDef242 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeDef249 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__0_in_ruleTypeDef275 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_entryRuleJAVAID302 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJAVAID309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__0_in_ruleJAVAID335 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_entryRuleEntity362 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEntity369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__0_in_ruleEntity395 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_entryRuleAttribute422 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAttribute429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__0_in_ruleAttribute455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_entryRuleFunction482 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunction489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Alternatives_in_ruleFunction515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePackage_in_rule__Type__Alternatives551 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeDef_in_rule__Type__Alternatives568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEntity_in_rule__Type__Alternatives585 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0__0_in_rule__Function__Alternatives617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1__0_in_rule__Function__Alternatives635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__0__Impl_in_rule__Package__Group__0666 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Package__Group__1_in_rule__Package__Group__0669 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_rule__Package__Group__0__Impl697 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__1__Impl_in_rule__Package__Group__1728 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_rule__Package__Group__2_in_rule__Package__Group__1731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__NameAssignment_1_in_rule__Package__Group__1__Impl758 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__2__Impl_in_rule__Package__Group__2788 = new BitSet(new long[]{0x0000000000026800L});
    public static final BitSet FOLLOW_rule__Package__Group__3_in_rule__Package__Group__2791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Package__Group__2__Impl819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__Group__3__Impl_in_rule__Package__Group__3850 = new BitSet(new long[]{0x0000000000026800L});
    public static final BitSet FOLLOW_rule__Package__Group__4_in_rule__Package__Group__3853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Package__TypesAssignment_3_in_rule__Package__Group__3__Impl880 = new BitSet(new long[]{0x0000000000024802L});
    public static final BitSet FOLLOW_rule__Package__Group__4__Impl_in_rule__Package__Group__4911 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Package__Group__4__Impl939 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__0__Impl_in_rule__TypeDef__Group__0980 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__1_in_rule__TypeDef__Group__0983 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_14_in_rule__TypeDef__Group__0__Impl1011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__1__Impl_in_rule__TypeDef__Group__11042 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__2_in_rule__TypeDef__Group__11045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__NameAssignment_1_in_rule__TypeDef__Group__1__Impl1072 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group__2__Impl_in_rule__TypeDef__Group__21102 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__0_in_rule__TypeDef__Group__2__Impl1129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__0__Impl_in_rule__TypeDef__Group_2__01166 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__1_in_rule__TypeDef__Group_2__01169 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_15_in_rule__TypeDef__Group_2__0__Impl1197 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__Group_2__1__Impl_in_rule__TypeDef__Group_2__11228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__TypeDef__MappedTypeAssignment_2_1_in_rule__TypeDef__Group_2__1__Impl1255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__0__Impl_in_rule__JAVAID__Group__01289 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__1_in_rule__JAVAID__Group__01292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__JAVAID__Group__0__Impl1319 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group__1__Impl_in_rule__JAVAID__Group__11348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__0_in_rule__JAVAID__Group__1__Impl1375 = new BitSet(new long[]{0x0000000000010002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__0__Impl_in_rule__JAVAID__Group_1__01410 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__1_in_rule__JAVAID__Group_1__01413 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_16_in_rule__JAVAID__Group_1__0__Impl1441 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__JAVAID__Group_1__1__Impl_in_rule__JAVAID__Group_1__11472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__JAVAID__Group_1__1__Impl1499 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__0__Impl_in_rule__Entity__Group__01532 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Entity__Group__1_in_rule__Entity__Group__01535 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_17_in_rule__Entity__Group__0__Impl1563 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__1__Impl_in_rule__Entity__Group__11594 = new BitSet(new long[]{0x0000000000041000L});
    public static final BitSet FOLLOW_rule__Entity__Group__2_in_rule__Entity__Group__11597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__NameAssignment_1_in_rule__Entity__Group__1__Impl1624 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__2__Impl_in_rule__Entity__Group__21654 = new BitSet(new long[]{0x0000000000041000L});
    public static final BitSet FOLLOW_rule__Entity__Group__3_in_rule__Entity__Group__21657 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__0_in_rule__Entity__Group__2__Impl1684 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__3__Impl_in_rule__Entity__Group__31715 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_rule__Entity__Group__4_in_rule__Entity__Group__31718 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Entity__Group__3__Impl1746 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__4__Impl_in_rule__Entity__Group__41777 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_rule__Entity__Group__5_in_rule__Entity__Group__41780 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__AttributesAssignment_4_in_rule__Entity__Group__4__Impl1807 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rule__Entity__Group__5__Impl_in_rule__Entity__Group__51838 = new BitSet(new long[]{0x0000000000082010L});
    public static final BitSet FOLLOW_rule__Entity__Group__6_in_rule__Entity__Group__51841 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__0_in_rule__Entity__Group__5__Impl1868 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group__6__Impl_in_rule__Entity__Group__61899 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Entity__Group__6__Impl1927 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__0__Impl_in_rule__Entity__Group_2__01972 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__1_in_rule__Entity__Group_2__01975 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_rule__Entity__Group_2__0__Impl2003 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_2__1__Impl_in_rule__Entity__Group_2__12034 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__SuperEntityAssignment_2_1_in_rule__Entity__Group_2__1__Impl2061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__0__Impl_in_rule__Entity__Group_5__02095 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__1_in_rule__Entity__Group_5__02098 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_rule__Entity__Group_5__0__Impl2126 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__1__Impl_in_rule__Entity__Group_5__12157 = new BitSet(new long[]{0x0000000000102010L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__2_in_rule__Entity__Group_5__12160 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_12_in_rule__Entity__Group_5__1__Impl2188 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__2__Impl_in_rule__Entity__Group_5__22219 = new BitSet(new long[]{0x0000000000102010L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__3_in_rule__Entity__Group_5__22222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Entity__FunctionsAssignment_5_2_in_rule__Entity__Group_5__2__Impl2249 = new BitSet(new long[]{0x0000000000100012L});
    public static final BitSet FOLLOW_rule__Entity__Group_5__3__Impl_in_rule__Entity__Group_5__32280 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_13_in_rule__Entity__Group_5__3__Impl2308 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__0__Impl_in_rule__Attribute__Group__02347 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_rule__Attribute__Group__1_in_rule__Attribute__Group__02350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__TypeAssignment_0_in_rule__Attribute__Group__0__Impl2377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__1__Impl_in_rule__Attribute__Group__12407 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_rule__Attribute__Group__2_in_rule__Attribute__Group__12410 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__ManyAssignment_1_in_rule__Attribute__Group__1__Impl2437 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__Group__2__Impl_in_rule__Attribute__Group__22468 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Attribute__NameAssignment_2_in_rule__Attribute__Group__2__Impl2495 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0__0__Impl_in_rule__Function__Group_0__02531 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_rule__Function__Group_0__1_in_rule__Function__Group_0__02534 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_rule__Function__Group_0__0__Impl2562 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0__1__Impl_in_rule__Function__Group_0__12593 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_rule__Function__Group_0__2_in_rule__Function__Group_0__12596 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__NameAssignment_0_1_in_rule__Function__Group_0__1__Impl2623 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0__2__Impl_in_rule__Function__Group_0__22653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0_2__0_in_rule__Function__Group_0__2__Impl2680 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0_2__0__Impl_in_rule__Function__Group_0_2__02717 = new BitSet(new long[]{0x0000000000400010L});
    public static final BitSet FOLLOW_rule__Function__Group_0_2__1_in_rule__Function__Group_0_2__02720 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_rule__Function__Group_0_2__0__Impl2748 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_0_2__1__Impl_in_rule__Function__Group_0_2__12779 = new BitSet(new long[]{0x0000000000400010L});
    public static final BitSet FOLLOW_rule__Function__Group_0_2__2_in_rule__Function__Group_0_2__12782 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__ParametersAssignment_0_2_1_in_rule__Function__Group_0_2__1__Impl2809 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rule__Function__Group_0_2__2__Impl_in_rule__Function__Group_0_2__22840 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rule__Function__Group_0_2__2__Impl2868 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1__0__Impl_in_rule__Function__Group_1__02905 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_rule__Function__Group_1__1_in_rule__Function__Group_1__02908 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__TypeAssignment_1_0_in_rule__Function__Group_1__0__Impl2935 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1__1__Impl_in_rule__Function__Group_1__12965 = new BitSet(new long[]{0x0000000000800010L});
    public static final BitSet FOLLOW_rule__Function__Group_1__2_in_rule__Function__Group_1__12968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__ManyAssignment_1_1_in_rule__Function__Group_1__1__Impl2995 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1__2__Impl_in_rule__Function__Group_1__23026 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_rule__Function__Group_1__3_in_rule__Function__Group_1__23029 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__NameAssignment_1_2_in_rule__Function__Group_1__2__Impl3056 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1__3__Impl_in_rule__Function__Group_1__33086 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1_3__0_in_rule__Function__Group_1__3__Impl3113 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1_3__0__Impl_in_rule__Function__Group_1_3__03152 = new BitSet(new long[]{0x0000000000400010L});
    public static final BitSet FOLLOW_rule__Function__Group_1_3__1_in_rule__Function__Group_1_3__03155 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_21_in_rule__Function__Group_1_3__0__Impl3183 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__Group_1_3__1__Impl_in_rule__Function__Group_1_3__13214 = new BitSet(new long[]{0x0000000000400010L});
    public static final BitSet FOLLOW_rule__Function__Group_1_3__2_in_rule__Function__Group_1_3__13217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rule__Function__ParametersAssignment_1_3_1_in_rule__Function__Group_1_3__1__Impl3244 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_rule__Function__Group_1_3__2__Impl_in_rule__Function__Group_1_3__23275 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_rule__Function__Group_1_3__2__Impl3303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_rule__Model__TypesAssignment3345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_rule__Package__NameAssignment_13376 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_rule__Package__TypesAssignment_33407 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__TypeDef__NameAssignment_13438 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJAVAID_in_rule__TypeDef__MappedTypeAssignment_2_13469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Entity__NameAssignment_13500 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Entity__SuperEntityAssignment_2_13535 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_rule__Entity__AttributesAssignment_43570 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunction_in_rule__Entity__FunctionsAssignment_5_23601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Attribute__TypeAssignment_03636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rule__Attribute__ManyAssignment_13676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Attribute__NameAssignment_23715 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Function__NameAssignment_0_13746 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_rule__Function__ParametersAssignment_0_2_13777 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Function__TypeAssignment_1_03812 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_rule__Function__ManyAssignment_1_13852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_rule__Function__NameAssignment_1_23891 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAttribute_in_rule__Function__ParametersAssignment_1_3_13922 = new BitSet(new long[]{0x0000000000000002L});

}